package demo1;

import org.springframework.context.annotation.AnnotationConfigApplicationContext;

public class Demo1 {
    public static void main(String[] args) throws Exception {
        //要求实例化person并调用sayHello
        /*
        1.new新对象
          优点,直接明了
          缺点,代码写死了,后期如果开发中调用的对象随着业务的改变而改变时
               这样写会导致调用方也要随之修改,提高维护成本
         */
//          Person p = new Person();
//          p.sayHello();


        //2.反射调用
        /*
            优点:代码灵活
            缺点:要写大量的反射代码
         */
//        Class cls = Class.forName("demo1.Person");
//        Person p = (Person) cls.newInstance();
//        p.sayHello();

        //3.Spring容器
        AnnotationConfigApplicationContext context
                = new AnnotationConfigApplicationContext("demo1");
        Person p = context.getBean(Person.class);
        p.sayHello();

    }
}
